/*
 * p1113.cpp
 *
 *  Created on: 2013-3-16
 *      Author: zy
 */

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;

const double EPS = 1e-6;
const int maxn=1100;
const double PI=acos(-1.0);

int sig(double d)
{
	return fabs(d) < EPS ? 0 : d < 0 ? -1 : 1;
}
struct Point
{
	double x, y;
	bool friend operator <(Point a, Point b)
	{
		if (sig(a.x - b.x) == 0)
			return a.y < b.y;
		return a.x < b.x;
	}
};

double cross(Point o, Point a, Point b)
{
	return (a.x - o.x) * (b.y - o.y) - (b.x - o.x) * (a.y - o.y);
}
double sqr(double x)
{
	return x*x;
}
double dis(Point a,Point b)
{
	return sqrt(sqr(a.x-b.x)+sqr(a.y-b.y));
}
int graham(Point *p, int n, int * ch)
{
#define push(x)     ch[len++]=x
#define pop()       len--
	sort(p, p + n);
	int len = 0, len0 = 1;
	for (int i = 0; i < n; i++)
	{
		while (len > len0 && cross(p[ch[len - 1]], p[ch[len - 2]], p[i]) <= 0)
			pop();
		push(i);
	}
	len0 = len;
	for (int i = n - 2; i >= 0; i--)
	{
		while (len > len0 && cross(p[ch[len - 1]], p[ch[len - 2]], p[i]) <= 0)
			pop();
		push(i);
	}
	return len-1;
}
Point p[maxn];
int n,L,ch[maxn];
int main()
{
	scanf("%d%d",&n,&L);
	for(int i=0;i<n;i++)
		scanf("%lf%lf",&p[i].x,&p[i].y);
	int len=graham(p,n,ch);
	double ans=PI*L*2;
	for(int i=0;i<len;i++)
		ans+=dis(p[ch[i]],p[ch[i+1]]);
	int ANS=(int)(ans+0.5);
	printf("%d\n",ANS);
	return 0;
}
